package com.sinog.front.config.idempotent;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @desc 自定义注解：接口幂等性注解
 * @author lzq
 * @date 2021-01-21 16:39
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Idempotent {

    /**
     * 超过请求幂等性提示信息
     * @return String
     */
    String message() default "请勿重复提交";

    /**
     * 该请求的唯一key 不填则为接口方法名称+接口api+接口参数值
     * @return String
     */
    String key() default "";

    /**
     * key的过期时间 等于请求最小间隔时常
     * @return long
     */
    long expireTime() default 15L;

    /**
     * 参数位置pos
     * @return int[]
     */
    int[] paramPos() default {0};

    /**
     * 请求结束后是否删除key 推荐 false 让他自动过期， true 则变相认为不适用幂等性拦截
     * @return boolean
     */
    boolean delKey() default false;
}